package com.tool.cn.util;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Base64;

/**
 * @Description 基于java8的base64工具类
 * @author wangzh
 * @date 2020年3月31日 下午4:37:21
 */
public final class Base64Util {
	
	/**
	 * 文件转base64
	 * @param filePath 文件地址
	 * @return
	 */
	public static String encryptToBase64(String filePath) {
		if (filePath == null) {
			return null;
		}
		
		try {
			byte[] b = Files.readAllBytes(Paths.get(filePath));
			return Base64.getEncoder().encodeToString(b);
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		return null;
	}
 
	
	/**
	 * base64字符串存储为文件
	 * @param base64 base64字符串
	 * @param filePath 文件地址
	 * @return
	 */
	public static boolean decryptByBase64(String base64, String filePath) {
		if (base64 == null && filePath == null) {
            System.out.println("base64数据为空");
            return false;
		}
		try {
			Files.write(Paths.get(filePath), Base64.getDecoder().decode(base64),StandardOpenOption.CREATE);
			return true;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return false;
	}

    /**
     * BASE64字符串解码为二进制数据
     */
    public static byte[] decode(String base64) throws Exception {
        return Base64.getDecoder().decode(base64.getBytes());
    }

    /**
     * 二进制数据编码为BASE64字符串
     */
    public static String encode(byte[] bytes) throws Exception {
		return new String(Base64.getEncoder().encode(bytes));
    }

}
